#include "stm32f4xx_hal.h"                  // Device header
#include "ucos_ii.h"
#include "main.h"

void GPIO_Init(void);
void LED_ON(void *data);
void LED_OFF(void *data);
//led宏定义
#define GPIO_Pin_Port GPIO_PIN_1
#define GPIO_Port GPIOB
OS_STK STACK_ON[OS_TASK_STK_SIZE];
OS_STK STACK_OFF[OS_TASK_STK_SIZE];

int a = 0;
int main(){
    SystemCLK_Config();
    NVIC_Manage();
    HAL_Init();
    GPIO_Init();
    OSInit();
    OSTaskCreate(LED_ON,NULL,&STACK_ON[99],8);
    OSTaskCreate(LED_OFF,NULL,&STACK_OFF[99],9);
    OSStart();
    OS_CPU_SysTickInit(10500);
    return 0;
}

void GPIO_Init(void){
//    //4.6日版本
//    __HAL_RCC_GPIOA_CLK_ENABLE();
//    
//    GPIO_InitTypeDef GPIO_InitStruct;
//    GPIO_InitStruct.Pin = GPIO_PIN_4;
//    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
//    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
//    
//    HAL_GPIO_Init(GPIOA,&GPIO_InitStruct);
//    
//    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
    
    //测试版本
    __HAL_RCC_GPIOB_CLK_ENABLE();
    
    GPIO_InitTypeDef GPIO_InitStruct;
    GPIO_InitStruct.Pin = GPIO_Pin_Port;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    
    HAL_GPIO_Init(GPIO_Port,&GPIO_InitStruct);
    
//    HAL_GPIO_WritePin(GPIO_Port,GPIO_Pin_Port,GPIO_PIN_SET);
    return;
}

void LED_ON(void *data){
    
//        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_SET);
        HAL_GPIO_WritePin(GPIO_Port,GPIO_Pin_Port,GPIO_PIN_SET);
        OSTimeDly(10);
}

void LED_OFF(void *data){
    while(1){
//        HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,GPIO_PIN_RESET);
//        for(int i = 0 ;i< 10000000;){i++;}
        HAL_GPIO_WritePin(GPIO_Port,GPIO_Pin_Port,GPIO_PIN_RESET);
        OSTimeDly(10);
    }
}



